package javabook.ch06;
	
/*
 * 01~03, 22, 42행: public 
    public으로 선언된 클래스, 변수, 메소드는 접근을 원하는 모든 곳에서 상속 및 참조가 가능하며 가장 일반적인 접근 한정자이다.  

 */
	class Sungjuk_6_8_1 { 
		public String hakbun; 
		public String name; 
		public int jumsu;
	} 
	
/*
 * 05~11행, 26~29행, 43행: private 
    private으로 선언된 변수, 메소드는 클래스 내부에서만 접근이 가능하며, 
    같은 패키지 내의 클래스, 서브 클래스, 다른 모든 클래스에서는 접근이 허용되지 않는다. 
    그러므로 접근하려면 다음과 같이 public 으로 선언된 메소드를 통하여 접근한다. 
    
      public void set_hakbun(String h) { hakbun = h; } 
      public void set_name(String n) { name = n; } 
      public void set_jumsu(int j) { jumsu = j; } 
      public void dsp_all() { System.out.println(hakbun + "  " + name                    + "  " +                                  jumsu); } } 


 */
	class Sungjuk_6_8_2 { 
		
		private String hakbun; 
		private String name; 
		private int jumsu; 
		
		public void set_hakbun(String h) { 
			hakbun = h; 
		} 
		public void set_name(String n) { 
			name = n; 
		} 
		public void set_jumsu(int j) { 
			jumsu = j; 
		} 
		public void dsp_all() { 
			System.out.println(hakbun + "  " + name + "  " + jumsu); 
		}
	} 
	/*
	 * 12~15행, 20, 30, 44행: protected 
    protected으로 선언된 변수, 메소드는 클래스 내부, 서브 클래스, 
    같은 패키지 내의 클래스에서 접근이 가능하며, 
    다른 모든 클래스에서는 접근이 허용되지 않는다. 
    class Jv_6_8 extends Sungjuk_6_8_3에서
     extends를 이용해 Sungjuk_6_8_3 클래스의 하위 클래스로 class Jv_6_8를 사용하므로
      protected으로 선언된 변수, 메소드는 클래스 내부, 서브 클래스, 같은 패키지 내의 클래스에서 접근이 가능하다. 

	 */
	
	class Sungjuk_6_8_3 { 
		
		protected String hakbun; 
		protected String name; 
		protected int jumsu; 
	} 
	
	/*
	 * 
	17~19행, 34, 45행: default(공백) 또는 package 
    멤버 정의시에 접근 한정자를 선언하지 않으면 자동적으로 package로 선언된다. 
	package으로 선언된 변수, 메소드는 클래스 내부, 같은 패키지 내의 클래스에서 접근이 가능하며, 
    서브 클래스, 다른 모든 클래스에서는 접근이 허용되지 않는다.

	 */
	
	class Sungjuk_6_8_4 { 
		
		String hakbun; 
		String name; 
		int jumsu; 
	} 
	
	class Jv_6_8 extends Sungjuk_6_8_3 { 
		public static void main(String[] args) { 
			
			Sungjuk_6_8_1 ken_sung = new Sungjuk_6_8_1(); 	
			ken_sung.hakbun = "2060001"; 
			ken_sung.name = "Ko  Eung-Nam"; 
			ken_sung.jumsu = 60; 
			
			Sungjuk_6_8_2 wife_sung = new Sungjuk_6_8_2(); 
			wife_sung.set_hakbun("2060002"); 
			wife_sung.set_name("Boo  Chag-Mi"); 
			wife_sung.set_jumsu(80); 
			
			Sungjuk_6_8_3 yoo_sung = new Sungjuk_6_8_3(); 
			yoo_sung.hakbun = "2060003"; 
			yoo_sung.name = "Ko   Yoo-Jin"; 
			yoo_sung.jumsu = 100; 
			
			Sungjuk_6_8_4 soo_sung = new Sungjuk_6_8_4(); 
			soo_sung.hakbun = "2060004"; 
			soo_sung.name = "Ko     Su-Ji"; 
			soo_sung.jumsu = 99; 
			
			System.out.println("****** 접근한정자 및 변수의 유효 범위 *****"); 
			System.out.println("*** 자바의 성적 출력 ***"); 
			System.out.println("**학번** **성명** **점수**"); 
			System.out.println("---------------------------------"); 
			
			System.out.println(ken_sung.hakbun + "  " + ken_sung.name + "  " + ken_sung.jumsu); 
			wife_sung.dsp_all();

			System.out.println(yoo_sung.hakbun + "  " + yoo_sung.name + "  " + yoo_sung.jumsu); 
			System.out.println(soo_sung.hakbun + "  " + soo_sung.name + "  " + soo_sung.jumsu); 
			
			System.out.println("---------------------------------"); 
		} 
	} 













			
			
			